package Flink.union;

import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class UnionExample {
    // Todo 基本合流操作
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        env.setParallelism(1);

        DataStreamSource<Integer> ds1 = env.fromElements(1, 2, 3);
        DataStreamSource<Integer> ds2 = env.fromElements(2, 2, 3);
        DataStreamSource<String> ds3 = env.fromElements("2", "2", "3");

        // Todo 1. 联合（Union）
        /**
         * 最简单的合流操作，就是直接将多条流合在一起，叫作流的“联合”（union）。联合操作
         * 要求必须流中的数据类型必须相同，合并之后的新流会包括所有流中的元素，数据类型不变。
         * union()的参数可以是多个DataStream，所以联合操作可以实现多条流的合并。
         */
        ds1.union(ds2,ds3.map(Integer::valueOf))
                .print();

        env.execute();
    }
}
